package com.yunxi.dao.otd;

import com.yunxi.core.dao.BaseMapperPlus;
import com.yunxi.model.otd.OtdProduceCalendar;
import com.yunxi.otd.pojo.OtdProduceCalendarWeekVO;
import com.yunxi.otd.pojo.OtdWeekColumnHeadVO;
import java.util.Date;
import java.util.List;
import java.util.Map;
import org.apache.ibatis.annotations.Param;

/**
 * <p>
 * 生产工作日历 Mapper 接口
 * </p>
 *
 * @author XUQI
 * @since 2019-07-02
 */
public interface OtdProduceCalendarMapper extends BaseMapperPlus<OtdProduceCalendar> {

    void updateIsWorkByDay(@Param("day") Date day, @Param("isWork") Integer isWork, @Param("realName") String realName);

    List<Date> selectWorkDay(@Param("startDate") Date startDate, @Param("endDate") Date endDate);

    /**
     * 根据年月查询工作日
     *
     * @param yearMonth 年月
     * @param isWork 是否工作日
     * @return 日期集合
     */
    List<Date> findWorkDayByYearMonth(@Param("yearMonth") String yearMonth, @Param("isWork") String isWork);

    /**
     * 根据年周查询工作日
     *
     * @param year 年
     * @param week 周
     * @return 日期集合
     */
    List<Date> findWorkDayByYearWeek(@Param("year") String year, @Param("week") String week);

    /**
     * 根据年月查询工作日
     *
     * @param yearMonth 年月
     * @return 日期集合
     */
    List<Integer> findIntWorkDayByYearMonth(@Param("yearMonth") String yearMonth);

    /**
     * 根据年月查询工作日对应周
     *
     * @param map 查询条件
     * @return List<OtdProduceCalendarWeekVO>
     */
    List<OtdProduceCalendarWeekVO> findCalendarWeek(Map<String, Object> map);


    /**
     * 查询某个月包含哪几周
     *
     * @param year 年
     * @param month 月
     * @return 周数集合
     */
    List<String> selectWeekListByMonth(@Param("year") String year, @Param("month") String month);

    /**
     * 根据年周查询往后5周周数，包括查询周
     *
     * @param year 年
     * @param week 周
     * @return 周数集合
     */
    List<String> selectWeekListByYearWeek(@Param("year") String year, @Param("week") String week);

    /**
     * 根据年月查询周数 格式：01(2019-01-01~2019-01-07)
     *
     * @param yearMonth 年月
     * @return List<OtdWeekColumnHeadVO>
     */
    List<OtdWeekColumnHeadVO> selectWeekColumnHeadByMonth(@Param("yearMonth") String yearMonth);

    /**
     * 根据选定周查询5周列头 格式：01(2019-01-01~2019-01-07)
     *
     * @param year 年
     * @param week 周
     * @return ApiResult
     */
    List<OtdWeekColumnHeadVO> selectWeekColumnHeadByWeek(@Param("year") String year, @Param("week") String week);



}
